package com.mmd.tencent.service;

import com.mmd.tencent.entity.*;

import java.security.NoSuchAlgorithmException;

/**
 * 微信公众号授权登录 通过前端传过来的code 调用{@link #getUserInfo(String)}获取用户基础信息后在进行调用{@link #userInfo(String, String)}获取用户详细信息
 * 微信小程序授权 通过前端传过来的{@link WechatMinaLoginEntity} 调用{@link #getUserInfoMini(String)}获取用户基础信息后在进行调用{@link #userInfo(String, String)}获取用户详细信息
 */
public interface WechatPublicService {
    /**
     * 获取微信用户信息 和 refreshToken
     *
     * @param code String
     */
    WechatUserEntity getUserInfo(String code);

    /**
     * 微信小程序获取用户信息
     * @param code String
     */
    WechatMiniUserEntity getUserInfoMini(String code);

    /**
     * 刷新accessToken
     */
    WechatUserEntity refresh(String refreshToken);

    /**
     * 获取用户信息
     */
    WechatUserInfoEntity userInfo(String accessToken, String openId);

    /**
     * 获取accessToken
     */
    WechatAccessToken unifyAccessTokenUrl();

    /**
     * 获取jsapiTicket
     */
    JsapiTicket jsapiTicket();

    /**
     * 获取jsapiTicket
     */
    JsapiTicket jsapiTicket(String accessToken);

    /**
     * JSSDK初始化配置
     * 微信分享 配置
     * 不要hash路由
     * 微信让前端url编码了 这里一定不要编码 必须是正常的字符 例如http://commontest.natapp1.cc/pages/help/index?projectId=41
     */
    WechatShareEntity wechatShareEntity(String url) throws NoSuchAlgorithmException;

    /**
     * 获取微信基础数据
     * @param key 加签键名
     * @param value 加签值
     */
    WechatShareEntity wechatShareEntity(String key, String value) throws NoSuchAlgorithmException;
}
